//
//  ZYDownloadTask.h
//  ZYWebImage
//
//  Created by wangzhipan on 2025/3/14.
//

#import <Foundation/Foundation.h>
#import "IZYWebImageProtocol.h"

NS_ASSUME_NONNULL_BEGIN

/*
 在真正downloadImage时，返回一个task给调用者，方便调用者随时cancel这个任务
 由于在download时，一个相同的url可以对应多个task下载任务，虽然最终都是对应一个operation
 但是如果TaskA 做cancel时，可能TaskB、TaskC需要继续下载
 那如何精细化控制只cancel TaskA，又不影响相同url的其他Task继续下载？
 那就是每个operation在添加completed时，返回一个Token，当taskA cancel时，只针对TokenA cancel
 operation内部再判断：
    1、只需要移除TokenA 的callback，但继续下载任务
    2、移除TokenA 的callback后没有其他Task了，那结束这个url的下载
 */
@class ZYImageOperation, ZYImageOperationToken;
@interface ZYDownloadTask : NSObject<IZYTaskProtocol>
- (instancetype)initWithOperation:(ZYImageOperation *)downloadOperation
                            token:(ZYImageOperationToken *)token;
@end


NS_ASSUME_NONNULL_END
